package main

import (
	"fmt"
	"strconv"
)

func Intself() {
	// 运算符
	//	  +加法 -减法 *乘法 /除法  %取余  ++ --自增减
	//    ==比较  ！=不等于  && 和   || 或   ！ 非
	//
	// 整数 小数 字符串 布尔值
	// %d 整数  %s 字符串  %p 内存地址
	// & 是获取内存地址  * 是获取指针的值
	// := 是定义变量 = 是赋值 ==是比较 += 本身加上 -= 本身减去  *= 本身乘以 /= 本身除以 %= 本身除去

	// 单位
	//     位b 一个二进制的位置，  字节B 8个位，  千字节KB 1024个字节，   兆MB 1024个千字节
	//     千兆GB 1024个兆，   万字节TB 1024个GB

	//编码
	//  ASCII 编码
	//    11111111(二进制编码) = 256  这256位就是对应的各种键盘上的字符串
	//    比如再键盘上输入 a ， 他会按照ACSII对照表找到对面的二进制编码 之后输入电脑
	//    不能表示中文
	//  unicode 万国码
	//    ucs2, 用16位表示各种字符  2**16=65535  65535位表示各种字符串 数字 各国语言
	//    ucs4, 用32位表示各种字符  2**32=4294967296  表示各种字符串 数字 各国语言等
	//  UTF-8 编码
	//    对unicode进行压缩
	//    先去 找对应的模板， 找到对应字符串的位置
	//    之后 码位以二进制的形式展示，再根据模板进行转换
}

func Test_1() {
	var name string = "毛雨琛"
	fmt.Println(name[0]) // 输出的是这个字节十进制的表示
	fmt.Println(name[1])
	fmt.Println(name[2])

	fmt.Println(name[0], strconv.FormatInt(int64(name[0]), 2)) // 输出的是这个字节十进制的表示, 转换成2进制
	fmt.Println(name[1], strconv.FormatInt(int64(name[1]), 16))
	fmt.Println(name[2], strconv.FormatInt(int64(name[2]), 8))

}
